﻿//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright 2010 - 2011 Information Security Software (China) Co., Ltd.
// All rights reserved
// 版权所有 2010 - 2011 信安软件（中国）有限公司
// 保留所有权利

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Note:
// This file contains confidential information and trade secret of Information Security
// Software (China) Co., Ltd., a wholly-owned subsidiary of China Information Technology, Inc.
// You can not give the information of this file to other parties without the written
// authorization of Information Security Software (China) Co., Ltd.
// 注意:
// 本文件包含信安软件（中国）有限公司的机密信息和商业秘密。
// 没有信安软件（中国）有限公司的书面授权，严禁向第三方泄漏本文件的相关信息。
// 信安软件（中国）有限公司为中国信息技术有限公司的全资子公司。
//////////////////////////////////////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
using System.Runtime.InteropServices;

namespace DusonFramework.Documents.Office.PowerPoint
{
    public class PPT2Wmv
    {
        public bool Excute(string srcFilePath, string descFilePath)
        {
            bool result;

            ApplicationClass app = new ApplicationClass();
            Presentation file = app.Presentations.Open(srcFilePath, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
            file.CreateVideo(descFilePath);

            // 转化过程
            while (true)
            {
                if (file.CreateVideoStatus == PpMediaTaskStatus.ppMediaTaskStatusFailed)
                {
                    result = false;
                    break;
                }
                if (file.CreateVideoStatus == PpMediaTaskStatus.ppMediaTaskStatusDone)
                {
                    result = true;
                    break;
                }
            }

            // 清理
            file.Close();
            app.Quit();
            Marshal.ReleaseComObject(file);
            Marshal.ReleaseComObject(app);
            file = null;
            app = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();

            return result;
        }
    }
}
